package zpe.controledeacesso.util;


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;

import zpe.controledeacesso.model.bean.Usuario;
import zpe.controledeacesso.security.Acesso;
import zpe.genericcrud.jsf.view.bean.FacesUtils;

public class UsuarioUtil {
	
	public static Usuario getUsuarioLogado() {
		Usuario usuarioAux = (Usuario) FacesUtils.pegaAtributoSessao("usuario");
		return usuarioAux;
	}

	public static String stringHexa(byte[] bytes) {
		StringBuilder s = new StringBuilder();
		for (int i = 0; i < bytes.length; i++) {
			int parteAlta = ((bytes[i] >> 4) & 0xf) << 4;
			int parteBaixa = bytes[i] & 0xf;
			if (parteAlta == 0)
				s.append('0');
			s.append(Integer.toHexString(parteAlta | parteBaixa));
		}
		return s.toString();
	}
	/**
	 * String frase = "Quero gerar c�digos hash desta mensagem.";
	 * stringHexa(gerarHash(frase));
	 * @param codigo
	 * @return
	 */
	public static byte[] gerarHash(String codigo) {
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(codigo.getBytes());
			return md.digest();
		} catch (NoSuchAlgorithmException e) {
			return null;
		}
	}
	
	@SuppressWarnings("unchecked")
	public static Acesso getAcesso( String key ){
		return ((Map<String, Acesso>)FacesUtils.pegaAtributoSessao( "acessos" )).get(key);
	}
}
